package dltec.demo;

import java.util.Arrays;
import java.util.Comparator;

public class demo02 {

	public static void main(String[] args) {
		
		// 使用匿名内部类的形式，实现Comparator自定义排序接口，在里面指定排序规则
		
		String[] strs = {"EE","FF","AA","DD","BB","CC","GG"};
		
		//因为这个类，只针对strs数组， 设计比较规则，只使用一次，所以使用匿名内部类
		Arrays.sort(strs,new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				
				return - o1.compareTo(o2);
			}	
		});
		
		System.out.println(Arrays.toString(strs));
		
		System.out.println("-----------------------------");
		
		//不影响Goods已经实现的比较接口下，在比较 名字由小到大，名字相同 加个由大到下。
		
		Goods g1 = new Goods("华为",4999);
		Goods g2 = new Goods("苹果",4999);
		Goods g3 = new Goods("opple",3999);
		Goods g4 = new Goods("vivo",5299);
		Goods g5 = new Goods("小米",2999);
		Goods g6 = new Goods("三星",4999);
		
		Goods[] goods = {g1,g2,g3,g4,g5,g6};
		
		//因为只用一次 选用匿名内部类
		Arrays.sort(goods,new Comparator<Goods>() {

			@Override
			public int compare(Goods o1, Goods o2) {
				//不影响Goods已经实现的比较接口下，在比较 名字由小到大，名字相同 加个由大到下。
				//名字相等时
				if(o1.getName().equals(o2.getName())){
					//名字相等 ，加个 由大到小排序  前面加 - 号
					return  - Double.compare(o1.getPrice(), o2.getPrice());
				}else{
					//名字不相等，名字由小到大排序
					return o1.getName().compareTo(o2.getName());
				}
			
			}
		});
		
		System.out.println(Arrays.toString(goods));

	}

}
